﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;
using WPFSchematics.Definition.Shapes;
using System.Windows;
using WPFSchematics.Definition.Views;

namespace WPFSchematics.Definition.Common
{
    public interface IMouseTool:IExtendCommand
    {
        /// <summary>
        /// 是否动作。
        /// </summary>
        bool IsAction { get; }
        /// <summary>
        /// 鼠标进入处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="featureView"></param>
        void OnMouseEnter(MouseEventArgs e, IShapeView featureView);
        /// <summary>
        /// 鼠标按下处理。
        /// </summary>
        /// <param name="e"></param>
        void OnMouseDown(MouseButtonEventArgs e, IShapeView featureView);
        /// <summary>
        /// 鼠标移动处理。
        /// </summary>
        /// <param name="e"></param>
        void OnMouseMove(MouseEventArgs e, IShapeView featureView);
        /// <summary>
        /// 鼠标释放处理。
        /// </summary>
        /// <param name="e"></param>
        void OnMouseButtonUp(MouseButtonEventArgs e, IShapeView featureView);
        /// <summary>
        /// 鼠标滚轮处理。
        /// </summary>
        /// <param name="e"></param>
        void OnMouseWheel(MouseWheelEventArgs e, IShapeView featureView);
        /// <summary>
        /// 鼠标离开处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnMouseLeave(MouseEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 鼠标左键按下处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnMouseLeftButtonDown(MouseButtonEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 鼠标左键释放处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnMouseLeftButtonUp(MouseButtonEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 鼠标右键按下处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnMouseRightButtonDown(MouseButtonEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 鼠标右键释放处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnMouseRightButtonUp(MouseButtonEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 拖拽进入处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnDragEnter(DragEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 拖拽离开处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnDragLeave(DragEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 拖拽移动处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnDragOver(DragEventArgs e, IShapeView shapeView);
        /// <summary>
        /// 拖拽释放处理。
        /// </summary>
        /// <param name="e"></param>
        /// <param name="shapeView"></param>
        void OnDrop(DragEventArgs e, IShapeView shapeView);
    }
}
